其實完全可以這麼說 區塊鏈是建構於加密學之上的
然而區塊鏈在加密學的使用主要可以分以下兩種技術進行講述
以下我會根據各自的原理說起,再帶出這項技術在區塊練中的應用。
像是在前一篇討論 區塊與鏈 時,就一直提及哈希這個詞彙。
哈希函數(Hash Function)就是一種數學函數。
而這種函數 又具有以下特點
不管輸入長度為和 輸出長度均相等
要使不同的值進行運算會獲得一個完全不同的答案
正如破壞性的 無法從結果回推輸入值
這意味著難以找到兩個不同的輸入產生相同的哈希值
坦白說講到這裡大家一定無法理解,當中又以不可逆性我想是最難理解。
因此最好的方式就是舉個例子,我記得當初我上課教授也舉這個。
便是 mod(餘數)運算
4 % 3 = 1
100 % 3 = 1
*此處%代表取餘數運算
在上述例子中,不論輸入是 4 或 100 輸出都是 1。
即代表我無法單純以輸出反推輸入,這運算具有破壞性、不可逆性。
因此哈希函數就是類似這種,無法透過結果推出原始輸入的函式。
若對於哈希函數算法可以去查詢其內部如何實現。
此處便不繼續討論其計算方式。
備註:
此處僅為介紹哈希函數的不可逆性,mod (取餘數)本身並非哈希函數(不符合抗碰撞性) 非常容易碰撞。
1. 區塊間 相連的數值
每個區塊都會有其哈希值,
就是透過計算 "區塊頭" 將其連續丟進哈希函數運算後所獲的值(雙重哈希)。
然後循而往復,再將這個值當作下個 "區塊頭" 中的 "前區塊哈希值"。
2. Markle root 計算
先前有提過 Markel root 與交易數據息息相關
便是因為其計算方式
舉例來說:
總共4筆交易
發送地址 | 接收地址 | 費用 | 給礦工手續費 |
---|---|---|---|
A | B | 10 ETH | 1 ETH |
B | C | 10 ETH | 1 ETH |
C | D | 10 ETH | 1 ETH |
D | A | 10 ETH | 1 ETH |
#首先分別計算每筆哈希值
HASH1 = Hash(A + B + 10 ETH + 1 ETH)
HASH2 = Hash(B + C + 10 ETH + 1 ETH)
HASH3 = Hash(C + D + 10 ETH + 1 ETH)
HASH4 = Hash(D + A + 10 ETH + 1 ETH)
#兩兩配對再次進行哈希 若有餘數則單獨進行哈希
HASH12 = HASH(HASH1 + HASH2)
HASH34 = HASH(HASH3 + HASH4)
#重複上一步驟 持續到剩餘一個值 即是Markle root
HASH1234 = HASH(HASH12 + HASH34)
#推算得知 Markle root
Markel root = HASH1234
3. 交易紀錄 哈希計算
透過將交易紀錄進行哈希 就可以方便未來查詢到該筆紀錄。
非對稱式加密,是一種加密技術。
它使用一對密鑰來執行操作,
其中一個是公開的(公鑰),而另一個是私有的(私鑰)。
而這種加密方式有以下特色
對於以上兩種模式進行解釋,
公鑰加密 私鑰解密
對於想隱藏的內容 透過公鑰進行加密
不一定會知道是誰加密的 但只有擁有私鑰的人可以得知內容
私鑰簽名 公鑰認證
對於公開的內容 透過私鑰進行簽名
可以透過公鑰確認是否為私鑰簽署的 內容大家都知道
其實現方式與邏輯原理這邊便不再展開。
若對其有興趣可以再透過自行學習獲得其更深入知識。
哇! 光上述兩個特性就知道這算法有多方便了。
現在來仔細看其應用的內容
發送地址 | 接收地址 | 費用 | 給礦工手續費 | 交易簽名 |
---|
透過這些紀錄
礦工便可計算交易簽名是否為發送地址的所簽署
進而判斷該筆交易是否合法
身分驗證
用戶可以使用自己的私鑰來證明他們擁有特定的公鑰
進而驗證他的身分
加密貨幣錢包
用戶的私鑰用於簽署交易,而公鑰用於接收資金。
坦白說,我今天寫這篇頭超痛。
看完這篇會感到很散是正常,因為就連我自己寫得也覺得很散。
感覺整篇就講了一堆理論這樣~~~
不過我認為這段真的就是區塊鏈的底層知識吧?
希望看完這篇後能理解
看完這篇覺得超暈 沒關係
這就是戀愛的感覺~~~ 哈哈哈
下篇將會更有系統性的介紹 區塊鏈如何運行